package com.apollographql.apollo.compiler.codegen

import com.apollographql.apollo.annotations.ApolloDeprecatedSince

interface CommonLayout {
  fun className(name: String): String
  fun propertyName(name: String): String
}

interface SchemaLayout : CommonLayout {
  fun schemaPackageName(): String
  fun schemaTypeName(schemaTypeName: String): String
  fun schemaName(): String
  fun assertionsName(): String

  @Deprecated("This is no longer called and doesn't need to be implemented. Code related to pagination is now generated by the apollo-kotlin-normalized-cache compiler plugin.")
  @ApolloDeprecatedSince(ApolloDeprecatedSince.Version.v5_0_0)
  fun paginationName(): String = ""
}

interface OperationsLayout : CommonLayout {
  fun executableDocumentPackageName(filePath: String?): String
  fun operationName(name: String, capitalizedOperationType: String): String
  fun fragmentName(name: String): String
}

interface SchemaAndOperationsLayout : SchemaLayout, OperationsLayout
